<template>

  <div>
    <UploadExcelComponent :on-success="handleSuccess" :before-upload="beforeUpload" />
  </div>

</template>

<script>
import { reqImportEmployee } from '@/api/employees'
import employeeMenu from '@/constant/employees'
export default {
  name: 'UploadExcel',
  data() {
    return {

    }
  },
  mounted() {
    console.log(this.$route)
  },
  methods: {
    // 判断上传的文件大小, 小于1M才可以上传
    beforeUpload(file) {
      const isLt1M = file.size / 1024 / 1024 < 1

      if (isLt1M) {
        return true
      }

      this.$message({
        message: '请上传excel文件在1M之内',
        type: 'warning'
      })
      return false
    },

    // results就是 表格的内容  header 表格的标题
    async  handleSuccess({ results }) {
      if (this.$route.query.type === 'employees') {
        // console.log(results)
      // reqImportEmployee(results) // 要求批量导入数据的时候数据格式是数组包对象的, 但是results中数据全是中文的键
      // 将导入的数据的每一个对象的键全部处理成英文, 再发送请求
      // header中, results中的数据是中文的, 但是提交给后台的要是英文的
        const userRelations = {
          '工号': 'workNumber',
          '手机号': 'mobile',
          '入职日期': 'timeOfEntry',
          '转正日期': 'correctionTime',
          '姓名': 'username',
          '部门': 'departmentName',
          '聘用形式': 'formOfEmployment'
        }

        const arr = results.map(item => {
          const obj = {}
          // console.log(item) // 每一个员工对象
          for (const k in item) {
          // console.log(k) // 中文的键-姓名
          // console.log(userRelations[k]) // 英文的键username
          // console.log(item[k]) // 值
            const englishKey = userRelations[k]
            // 如果是聘用形式  1 和 2 处理
            if (englishKey === 'formOfEmployment') {
              const o = employeeMenu.hireType.find(obj => obj.value === item[k])
              obj[englishKey] = o.id
            } else if (englishKey === 'timeOfEntry' || englishKey === 'correctionTime') {
              obj[englishKey] = this.formatExcelDate(item[k], '-')
            } else {
              obj[englishKey] = item[k]
            }
          }
          return obj
        })
        console.log(arr) // 待会发送请求的携带的参数
        // 发送请求
        await reqImportEmployee(arr)
        // // 返回员工页面
        // this.$router.push('/employees')
        this.$router.back() // 返回上一次路由
      // this.$router.go(-1) // 返回上一次路由
      }
      if (this.$route.query.type === 'attendances') {
        console.log('考勤导入业务')
      }
    },

    // 2019-3-11  2019-3-10 23:59:17
    // 处理excel时间问题的公式
    formatExcelDate(numb, format) {
      const time = new Date((numb - 1) * 24 * 3600000 + 1) // 毫秒
      time.setYear(time.getFullYear() - 70)
      const year = time.getFullYear() + ''
      const month = time.getMonth() + 1 + ''
      const date = time.getDate() + ''
      if (format && format.length === 1) {
        return year + format + (month < 10 ? '0' + month : month) + format + (date < 10 ? '0' + date : date)
      }
      return year + (month < 10 ? '0' + month : month) + (date < 10 ? '0' + date : date)
    }
  }
}
</script>

<style>

</style>
